httpAuth.js ➔ completed   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
c 0
b 0
f 0
nc 2
nop 1
dl 0
loc 6
rs 9.4285
1
/* global API */
2
3
/**
4
 * Nextcloud - passman
5
 *
6
 * @copyright Copyright (c) 2016, Sander Brand ([email protected])
7
 * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel ([email protected])
8
 * @license GNU AGPL version 3 or any later version
9
 *
10
 * This program is free software: you can redistribute it and/or modify
11
 * it under the terms of the GNU Affero General Public License as
12
 * published by the Free Software Foundation, either version 3 of the
13
 * License, or (at your option) any later version.
14
 *
15
 * This program is distributed in the hope that it will be useful,
16
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 * GNU Affero General Public License for more details.
19
 *
20
 * You should have received a copy of the GNU Affero General Public License
21
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
 *
23
 */
24
25
(function () {
26
    'use strict';
27
    var pendingRequests = [];
28
29
    API.runtime.connect();
30
    // A request has completed.
31
    // We can stop worrying about it.
32
    function completed(requestDetails) {
33
        var index = pendingRequests.indexOf(requestDetails.requestId);
34
        if (index > -1) {
35
            pendingRequests.splice(index, 1);
36
        }
37
    }
38
39
    var auth_tries = [];
40
    var provideCredentialsSync = function (requestDetails) {
41
        if (!auth_tries[requestDetails.requestId]) {
42
            auth_tries[requestDetails.requestId] = 0;
43
        }
44
        /** global: background */
45
        var login = background.getCredentialForHTTPAuth(requestDetails);
46
47
        // If we have seen this request before, then
48
        // assume our credentials were bad, and give up.
49
        if (pendingRequests.indexOf(requestDetails.requestId) === -1) {
50
            pendingRequests.push(requestDetails.requestId);
51
            return {
52
                authCredentials: {
53
                    username: (login.username) ? login.username : login.email ,
54
                    password: login.password
55
                }
56
            };
57
58
        } else {
59
            console.warn("bad credentials for: " + requestDetails.url + ', Showing login dialog');
60
            //return {cancel: true};
61
            return undefined;
62
        }
63
64
    };
65
66
67
    API.webRequest.onAuthRequired.addListener(provideCredentialsSync, {urls: ["<all_urls>"]}, ["blocking"]);
68
69
    API.webRequest.onCompleted.addListener(
70
        completed,
71
        {urls: ["<all_urls>"]}
72
    );
73
74
    API.webRequest.onErrorOccurred.addListener(
75
        completed,
76
        {urls: ["<all_urls>"]}
77
    );
78
}());